#include "graph.h"
#include<bits/stdc++.h>
using namespace std;
const int N=205,inf=1e9;
int tot=1;
int fa[N],fx[N],dis[N][N],du[N];
void add(int x)
{
	++tot;
	dis[tot][tot]=0; dis[x][tot]=dis[tot][x]=1;
}
bool deled[N][N];
#define pii pair<int,int>
vector<pii> to[N];
void dfs(int x,int f)
{
	fa[x]=LastRoad(); du[x]=NumberOfRoads();
	fx[x]=f; dis[x][x]=1;
	for(int i=1;i<=du[x];i++)
	{
		if(i==fa[x]) continue;
		Move(i,2);
		if(Color()==2) Move(LastRoad(),2);
		else
		{
			++tot;
			dis[x][tot]=dis[tot][x]=1;
			to[x].push_back({tot,i}); deled[x][i]=1;
			dfs(tot,x);
		}
	} 
	if(x!=1)Move(fa[x],2);
}
void dfs2(int x,int f)
{
	for(auto p:to[x])
	Move(p.second,3),dfs2(p.first,x);
	for(int i=1;i<=du[x];i++)
	{
		if(deled[x][i]) continue;
		if(i==fa[x]) continue;
	Move(i,3); int ld=LastRoad(); Move(ld,1);
		int now=x; while(Color()!=1) Move(fa[now],3),now=fx[now];
		deled[now][ld]=1; dis[now][x]=dis[x][now]=1;Move(ld,3);
	}
	if(fa[x]!=-1)Move(fa[x],3);
}
int ans[N];
bool fl=0;
void Inspect(int R) {
	tot=1;
	memset(dis,0x3f,sizeof dis);
	dfs(1,0);
	dfs2(1,0);
	for(int k=1;k<=tot;k++)
	for(int i=1;i<=tot;i++)
	for(int j=1;j<=tot;j++)
		dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
	for(int i=1;i<=tot;i++)
	for(int j=1;j<i;j++)
		ans[dis[i][j]]++;
	for(int i=1;i<=R;i++)
		Answer(i,ans[i]);
    // Write your code here.
}
